package com.nuanshui.heatedloan.baseservice.facade;

import com.nuanshui.heatedloan.baseservice.form.ArticleForm;
import com.nuanshui.heatedloan.baseservice.model.ArticleType;
import com.nuanshui.heatedloan.baseservice.vo.ArticleTypeVO;
import com.nuanshui.heatedloan.baseservice.vo.ArticleVO;
import com.nuanshui.heatedloan.pageable.Pager;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface ArticleService {

	/**
	 * 通过别名来查询
	 * @param alias
	 * @return
	 */
	ArticleVO loadArticleByAlias(String alias);

	Pager<ArticleVO> loadArticle(Pager<ArticleVO> pager,ArticleForm articleForm);

	/**
	 * 动态分类
	 * @return
	 */
	List<ArticleType> getAllArticleType();


	ArticleType loadArticleType(String id);

	/**
	 * 动态分类
	 * @return
	 */
	List<ArticleType> getArticleType(ArticleType articleType);

	/**
	 * 新增一类资讯动态
	 * @param articleType 资讯动态
	 */
	void saveArticleType(ArticleType articleType);

	/**
	 * 修改资讯动态
	 * @param articleType 资讯动态
	 */
	void updateArticleType(ArticleType articleType);

	/**
	 * 删除资讯动态
	 * @param id
	 */
	void deleteArticleTypeById(String id);

	void save(ArticleForm article);

	ArticleVO loadVo(String id);

	/**
	 * 获取特定类别的文章
	 * @param catIds
	 * @return
	 */
	List<ArticleTypeVO> getCatArticleList(List<String> catIds);

	Pager<ArticleVO> getArticleListByType(String typeId, Pager<ArticleVO> pager);


	/**
	 * 置为存档
	 * @author Gonzo
	 * @date 2017年1月3日下午3:02:14
	 * @param articleId
	 * @since 1.0.0
	 */
	void delete(String articleId);
	
	/**
	 * 更新
	 * @author Gonzo
	 * @date 2017年1月3日下午3:07:01
	 * @param form
	 * @since 1.0.0
	 */
	void update(ArticleForm form);
	
	/**
	 * 上下架
	 * @author Gonzo
	 * @date 2017年1月3日下午4:05:32
	 * @param status
	 * @since 1.0.0
	 */
	void changeStatus(Integer status, String articleId);

	/**
	 * 查询某一资讯下所包含的文章数量
	 * @param articleTypeId
	 * @return
	 */
	int countByArticleTypeId(@Param("articleTypeId") String articleTypeId);

    void createArticleFromBackground(ArticleForm ArticleForm);
}